from models.department import Department
from models.demoDto import *
from models.Person import *



#类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
#类变量：类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
#数据成员：类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
#方法重写：如果从父类继承的方法不能满足子类的需求，可以对其进行改写，这个过程叫方法的覆盖（override），也称为方法的重写。
#局部变量：定义在方法中的变量，只作用于当前实例的类。
#实例变量：在类的声明中，属性是用变量来表示的。这种变量就称为实例变量，是在类声明的内部但是在类的其他成员方法之外声明的。
#继承：即一个派生类（derived class）继承基类（base
#class）的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如，有这样一个设计：一个Dog类型的对象派生自Animal类，这是模拟"是一个（is-a）"关系（例图，Dog是一个Animal）。
#实例化：创建一个类的实例，类的具体对象。
#方法：类中定义的函数。
#对象：通过类定义的数据结构实例。对象包括两个数据成员（类变量和实例变量）和方法。
if True:
    student = Student(1,'乔安生',1)
    print(student.getType())
    teacher = Teacher(2,'王老师',1)
    print(teacher.getType())


if True:
    func1 = UserInfo3(22,"用户类型")
    print(func1.sssss())
    print(func1.speak())
    
if False:
    func1 = DemoInit1('乔安生',18)
    print(func1.getName())
    print(func1.getA())
    func2 = UserInfo()
    print(func2.getString())
    print(func2.getModelId())
    print(func2.getModelType())
    func2.setModelType("乔安生定义的类型")
    print(func2.getModelType())

    func3 = UserInfo2(33,"用户类型","乔安生")
    print(func3.speak())

#调用 父类的 init 方法初始化父类
if False:
    func1 = DemoInit(123,123)
    print(func1.getR())
    print(func1.r)



if False:
    func1 = DemoNew()
    func2 = DemoNew()
    
    func1.setDemoFunction1('11111')
    print(func1.demoFunction1())
    print(func2.demoFunction1())

if False:
	#DemoDto
	print(DemoDto().getString())
	print(DemoDto.getString1())

